iT邦幫忙

2023 iThome 鐵人賽

DAY 14
0
Software Development

第一次學Web Service的經驗談系列 第 14

Day14主題:認識資料驗證

  • 分享至 

  • xImage
  •  

在設計網站階段時,對於欄位格式定義及驗證,強烈建議要先行設計好,才能讓相同欄位在不同頁面使用時,都能維持相同的格式驗證;而當欄位格式有異動時,也只需要修改一個地方,就能讓所有使用到的頁面都能一致同步修改。

資料驗證又可區分為前端驗證及後端驗證:

  1. 前端驗證:Client端使用Javascript預先檢查表單內容。
  2. 後端驗證:Server端利用Model資料驗證來防止異常儲存,也是此次主要說明的部份。

建置的方式並不會太困難,直接用一個範例來說明,會更加容易了解:

namespace DemoApp.Models
{
	public calss People
	{
		[Required]
		[StringLength(10, MinimumLength = 2, ErrorMessage = "{0} 的長度至少必須為 {2} 個字元。")]
[DisplayName(“姓名”)]
		Public string Name{get;set;}
		
		[DisplayName(“身高”)]
		Public string Height{get;set;}
	}
}

範例說明:

  1. [Required]是用來驗證必填功能。
  2. [StringLength]是用來判斷字串長度的;{0}是指欄位名稱,{2}是指第二組參數;意為姓名的長度至少必須為2個字元。
  3. [DisplayName]是用來呈現欄位名稱為雙引號內指定名稱。

當然還有很多屬性可以使用,整理了常用如下供參考:

  • [ValidateNever]:ValidateNeverAttribute 指出屬性或參數應該從驗證中排除。
  • [CreditCard]:驗證屬性是否具有信用卡格式。
  • [DisplayName]:設定欄位的顯示名稱。
    Ex.[DisplayName("帳號")]
  • [Required]:設定為必填欄位。
    Ex.[Required(ErrorMessage = "不可為空白")]
  • [Range]:設定欄位內容數值範圍。
    Ex.[Range(1, 100, ErrorMessage = "年齡須在{1}~{2}之間")]
  • [Compare]:與指定的欄位比較內容是否相同。
    Ex.[Compare("Password", ErrorMessage = "兩組密碼必須相同")]
  • [EmailAddress]:驗證欄位是否為Email格式。
    Ex.[EmailAddress(ErrorMessage ="Email格式有誤")]
  • [Phone]:驗證屬性具有電話號碼格式。
    Ex.[Phone(ErrorMessage ="電話號碼格式有誤")]
  • [Url]:驗證欄位是否為網址格式。
    Ex.[Url(ErrorMessage ="資料內容必須為網址格式")]
  • [StringLength]:設定欄位字串長度。
    Ex.[StringLength(12,MinimumLength = 6, ErrorMessage = "{0} 的長度至少必須為 {2} 個字元。")]
  • [Remote]:在伺服器上呼叫動作方法,以驗證用戶端上的輸入。
  • [RegularExpression]:設定欄位內容必須符合自訂的正規表達式,可參考2022鐵人賽文章
    Ex.[RegularExpression("[a-zA-z]{3}")]
  • [DataType(DataType.MultilineText]:驗證欄位的資料型別-多列文字。
  • [HiddenInput(DisplayValue = false)]:隱藏輸入。
  • [DataType(DataType.DateTime)]:驗證欄位的資料型別-屬性是時間。

好的,今天就先到這兒,明天再來繼續吧!

參考來源:
MVC model驗證總結


上一篇
Day13主題:認識資料傳遞(4)
下一篇
Day15主題:進階學習
系列文
第一次學Web Service的經驗談31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言